home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2005 October / Gamestar_77_2005-10_dvd.iso / Dema / betonsoldier_spdemo.exe / {app} / Shaders / fog.fx next >
Encoding:
Text File  |  2005-07-08  |  3.4 KB  |  97 lines

  1. //--------------------------------------------------------------------------------------------------
  2. //- fog.fx
  3. //--------------------------------------------------------------------------------------------------
  4.  
  5. //--------------------------------------------------------------------------------------------------
  6. //- Shared Parameters
  7. //--------------------------------------------------------------------------------------------------
  8.  
  9. #define FOG_ENABLE  // debug trigger
  10.  
  11. #ifdef FOG_ENABLE
  12. # ifndef FOG_DISABLE
  13.   #define FOG_OPTION_ENABLE
  14. # endif
  15. #endif
  16.  
  17. //#ifdef FOG_OPTION_ENABLE
  18.   shared float4        FogColor = {0.92, 0.88, 0.84, 0.0};
  19.   shared float        FogNear = 5000;
  20.   shared float        FogFar = 10000.0;
  21.   shared float        FogWeak = 0.0;
  22. //#endif // FOG_OPTION_ENABLE
  23.  
  24. //--------------------------------------------------------------------------------------------------
  25. //- Fog Macro, to keep one code for shaders...     ###
  26. //- difficult to do things 'beautifull' sometime. |^&^?
  27. //-                                                   `=;
  28. //--------------------------------------------------------------------------------------------------
  29.  
  30. #ifdef FOG_OPTION_ENABLE //*************************************************************************
  31.  
  32. # define FOG_OPTION_PARAMETERS \
  33.         FogEnable    = true ; \
  34.         FogColor        = <FogColor>;\
  35.         FogVertexMode     = LINEAR; \
  36.         FogTableMode    = NONE ; \
  37.         FogDensity    = 1.0f ; \
  38.         FogEnd        = <FogFar> ; \
  39.         FogStart        = <FogNear>
  40.  
  41. # define FOG_OPTION_VERTEX_FIELD \
  42.     float    Fog            :   FOG;
  43.  
  44. # define FOG_OPTION_VERTEX_FIELD_HACK(TARGET) \
  45.     float4     Hack              :   TARGET;
  46.  
  47. # define FOG_OPTION_COMPUTE(Output, Position) \
  48.     FOG_LINEAR_OPTION_COMPUTE(Output, Position)
  49.  
  50. # define FOG_LINEAR_OPTION_COMPUTE(Output, Position) \
  51.     Output.Fog = fog_linear(Position)        
  52.  
  53. # define FOG_OPTION FOG_OPTION_ON
  54. # define FOG_OPTION_ON(Instr) Instr
  55. # define FOG_OPTION_OFF(Instr)
  56.  
  57. #endif // FOG_OPTION_ENABLE *************************************************************************
  58.  
  59. #ifndef FOG_OPTION_ENABLE //*************************************************************************
  60.  
  61. # define FOG_OPTION_PARAMETERS \
  62.         FogEnable        = false
  63.         
  64. # define FOG_OPTION_VERTEX_FIELD
  65. # define FOG_OPTION_VERTEX_FIELD_HACK(void) 
  66.  
  67. # define FOG_OPTION_COMPUTE(NothingToDo, NothingToDoAgain)
  68.  
  69. # define FOG_OPTION(Instr)
  70. # define FOG_OPTION_ON(Instr)
  71.  
  72. # define FOG_OPTION_OFF(Instr) Instr
  73.         
  74. #endif // ! FOG_OPTION_ENABLE *************************************************************************
  75.  
  76.  
  77. #ifdef FOG_OPTION_ENABLE
  78.     //------------------------------------------------------------------------------------------------------
  79.     //------------------------------------------------------------------------------------------------------
  80.     //------------------------------------------------------------------------------------------------------
  81.  
  82.     float fog_linear(const float4 outputPosition) : FOG;
  83.  
  84.     //------------------------------------------------------------------------------------------------------
  85.     //------------------------------------------------------------------------------------------------------
  86.     //------------------------------------------------------------------------------------------------------
  87.     
  88.     float fog_linear(const float4 outputPosition) : FOG
  89.     {
  90.         float dist = outputPosition.z;
  91.         dist = clamp((FogFar - dist) / (FogFar - FogNear), 0.0f, 1.0f);
  92.         return clamp(dist + FogWeak, 0.0, 1.0);
  93.     }
  94.     
  95. #endif // FOG_OPTION_ENABLE
  96.  
  97.